-
Notifications
You must be signed in to change notification settings - Fork 2.4k
Manually parse and reconcile Boolean environment variables #17321
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
766f09c to
5affc21
Compare
5affc21 to
7474e50
Compare
7474e50 to
b623ef3
Compare
|
This is a lot of churn in uv and moves us to a custom pattern of using clap that requires to manually call a check function. Would it be possible to fix this on the clap side (clap-rs/clap#5591), so we can stay with the regular clap pattern and get the validation at parse time? |
|
I will try here: clap-rs/clap#6211. If it ends up taking a long time, though, I'm gonna advocate for merging this since it's a big improvement. Honestly... it's an improvement even if clap-rs/clap#6211 merges because we now track the source of these variables so we can report them in error messages. I might still advocate for this, it's so much better to be able to say |
crates/uv-cli/src/options.rs
Outdated
| } else if matches!(parse_boolish_environment_variable(env_var), Ok(Some(true))) { | ||
| Flag::Enabled { | ||
| source: FlagSource::Env(env_var), | ||
| name, | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I kind of wanted to move all the environment variable parsing into EnvironmentOptions
uv/crates/uv-settings/src/lib.rs
Line 590 in 13e7ad6
| pub struct EnvironmentOptions { |
then do combination with our three sources
Lines 3453 to 3455 in 9949f08
| args: PipOptions, | |
| filesystem: Option<FilesystemOptions>, | |
| environment: EnvironmentOptions, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this would fit into your pull request?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let me see what I can do!
|
It's a long-term goal (from my perspective) to disambiguate between environment variables and command-line arguments throughout, so I'm in favor of this kind of change. |
|
Per clap-rs/clap#5591 (comment), if this gets solved in Clap, it won't be until Clap v5. |
bd84e8b to
08a1b49
Compare
The env var annotations are no longer auto-generated by Clap since we removed the `env =` attribute from the affected flags. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <[email protected]>
08a1b49 to
4642228
Compare
e6c8e74 to
8328576
Compare
546b093 to
fd77b98
Compare
This MR contains the following updates: | Package | Update | Change | |---|---|---| | [astral-sh/uv](https://github.com/astral-sh/uv) | patch | `0.9.22` → `0.9.24` | MR created with the help of [el-capitano/tools/renovate-bot](https://gitlab.com/el-capitano/tools/renovate-bot). **Proposed changes to behavior should be submitted there as MRs.** --- ### Release Notes <details> <summary>astral-sh/uv (astral-sh/uv)</summary> ### [`v0.9.24`](https://github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#0924) [Compare Source](astral-sh/uv@0.9.23...0.9.24) Released on 2026-01-09. ##### Bug fixes - Fix handling of `UV_NO_SYNC=1 uv run ...` ([#​17391](astral-sh/uv#17391)) - Rebuild dynamic distribution when version changes with `--no-cache` ([#​17387](astral-sh/uv#17387)) ##### Documentation - Add Rust language classifier ([#​17389](astral-sh/uv#17389)) ### [`v0.9.23`](https://github.com/astral-sh/uv/blob/HEAD/CHANGELOG.md#0923) [Compare Source](astral-sh/uv@0.9.22...0.9.23) Released on 2026-01-09. ##### Enhancements - Only write portable paths in `RECORD` files ([#​17339](astral-sh/uv#17339)) - Support relative paths in `UV_PYTHON_BIN_DIR` and `UV_TOOL_BIN_DIR` ([#​17367](astral-sh/uv#17367)) ##### Preview features - Enable uploads to S3 via pre-signed URLs ([#​17349](astral-sh/uv#17349)) ##### Configuration - Allow setting proxy variables via global / user configuration ([#​16918](astral-sh/uv#16918)) - Manually parse and reconcile Boolean environment variables ([#​17321](astral-sh/uv#17321)) ##### Bug fixes - Avoid broken build artifacts on build failure ([#​17276](astral-sh/uv#17276)) - Fix missing dependencies on synthetic root in SBOM export ([#​17363](astral-sh/uv#17363)) - Recognize `armv8l` as an alias for `armv7l` in platform tag parsing ([#​17384](astral-sh/uv#17384)) - Fix redaction of a URL in a middleware trace log ([#​17346](astral-sh/uv#17346)) ##### Documentation - Add `index.md` suggestion to `llms.txt` ([#​17362](astral-sh/uv#17362)) - Clarify that `uv run` uses inexact syncing by default ([#​17366](astral-sh/uv#17366)) </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this MR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box --- This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi43NS4xIiwidXBkYXRlZEluVmVyIjoiNDIuNzUuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiUmVub3ZhdGUgQm90IiwiYXV0b21hdGlvbjpib3QtYXV0aG9yZWQiLCJkZXBlbmRlbmN5LXR5cGU6OnBhdGNoIl19-->
Summary
This gives us more flexibility since we can avoid erroring on "conflicts" when one option is disabled (e.g.,
UV_FROZEN=0 uv lock --check).Closes #13385.
Closes #13316.